ヘッダーをスキップ
Oracle TimesTen In-Memory Database C開発者およびリファレンス・ガイド
リリース7.0
E05164-03
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

ステージング・バッファの構成

非永続モードでXLAを初期化した後、ttXlaConfigBuffer関数を使用して、XLAステージング・バッファのサイズを設定します。1つのステージング・バッファのみが1つのデータ・ストアに対して設定できます。ステージング・バッファのサイズの設定は、通常の切断の場合は保持されます。ただし、このサイズ設定は、チェックポイント処理が行われているかどうかによっては、異常終了した場合に保持されない可能性があります。

ステージング・バッファのサイズを選択する場合は、バッファを小さく設定しすぎると、TimesTenの更新でバッファがいっぱいとなり、それ以上の更新が拒否されることを考慮してください。また、バッファに大量の領域を割り当てすぎると、メモリーが浪費されます。

ステージング・バッファのサイズを設定するには、ttXlaConfigBuffernewSizeパラメータに値を、oldSizeパラメータにNULLを指定します。oldSizeには、ステージング・バッファの以前のサイズが返されます。

たとえば、ステージング・バッファのサイズを400,000バイトに設定するには、次のように入力します。

SQLUBIGINT  oldsz, newsz

newsz = 400000;

rc = ttXlaConfigBuffer(xla_handle, &oldsz, &newsz);

printf("The old size of the XLA buffer is %d\n",(int)oldsz);

printf("The new size of the XLA buffer is %d\n",(int)newsz);

ステージング・バッファのサイズは、設定後、随時サイズ変更できます。ただし、サイズ変更を行うと、現在のバッファがコピーされるため、大幅にパフォーマンスが低下する場合があります。より小さいサイズをステージング・バッファに指定し、その小さいサイズに現在の内容を格納できない場合、ステージング・バッファは変更されず、エラーが返されます。


注意: ステージング・バッファのサイズの変更はすぐに実行されます。バッファのサイズが変更されると、ttXlaNextUpdateまたはttXlaNextUpdateWaitへの以前のコールによって返したレコードは無効になります。

また、ttXlaConfigBuffer関数を使用すると、ステージング・バッファの現在のサイズを取得できます。現在のバッファ・サイズを取得するには、newSizeにNULLを指定します。ステージング・バッファの現在のサイズはoldSizeに返されます。次に例を示します。

rc = ttXlaConfigBuffer(xla_handle, &oldsz, NULL);

printf("The old size of the XLA buffer is %d\n",(int)oldsz);

XLAの使用を終了した後、サイズを0(ゼロ)に設定してステージング・バッファを削除できます。次に例を示します。

newsz = 0;

rc = ttXlaConfigBuffer(xla_handle, NULL &newsz);


注意: XLAステージング・バッファが0(ゼロ)以外のサイズに設定され、XLAリーダーが接続されていない場合、データ・ストアへの更新はバッファに書き込まれます。ステージング・バッファがいっぱいになると、ユーザーがステージング・バッファを削除(サイズを0(ゼロ)に設定)するか、またはXLAリーダーを接続してバッファからの読取りを開始するまで、データベース処理を正常に完了することはできません。